package com.boot.utils;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MyBatisPlusGenerator {

//    public static void main(String[] args) {
//        // 数据源配置
//        DataSourceConfig dsc = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/数据库名", "用户名", "密码").build();
//
//        // 全局配置
//        GlobalConfig gc = new GlobalConfig.Builder()
//                .outputDir(System.getProperty("user.dir") + "/src/main/java")
//                .author("作者名")
//                .build();
//
//        // 策略配置
//        StrategyConfig strategy = new StrategyConfig.Builder()
//                .enableCapitalMode()
//                .entityBuilder()
//                .idType(IdType.AUTO)
//                .build();
//
//        // 包配置
//        PackageConfig pc = new PackageConfig.Builder()
//                .parent("com.example.你的项目名")
//                .entity("model")
//                .mapper("mapper")
//                .service("service")
//                .serviceImpl("service.impl")
//                .controller("controller")
//                .build();
//
//        // 执行生成
//        List<String> tableNames = new ArrayList<>();
//        tableNames.add("表名");
//        new AutoGenerator()
//                .setGlobalConfig(gc)
//                .setDataSource(dsc)
//                .setStrategy(strategy)
//                .setPackageInfo(pc)
//                .setTemplate(new FreemarkerTemplateEngine())
//                .execute(tableNames);
//    }

    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/ssky_note",
                        "root", "123456")
                .globalConfig(builder -> {
                    builder.author("mkq") // 设置作者
                            .fileOverride() // 覆盖已⽣成⽂件

                            .outputDir(System.getProperty("user.dir")+"/src/main/java"); // 指定输出⽬录
                })
                .packageConfig(builder -> {
                    builder.parent("com.boot") // 设置⽗包名

                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml,
                                    System.getProperty("user.dir") +"/src/main/resources/mapper/"));
                })
                .strategyConfig(builder -> {
                    builder.addInclude("sys_oper_log"); // 设置需要⽣成的表名
                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使⽤ Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
